Skip to content

feat(ev-deployer): part 1 - add ev-deployer CLI for genesis contract allocation#167

Open
randygrok wants to merge 11 commits intomainfrom
ev-deployer-part1-core
Open

feat(ev-deployer): part 1 - add ev-deployer CLI for genesis contract allocation#167
randygrok wants to merge 11 commits intomainfrom
ev-deployer-part1-core

Conversation

@randygrok
Copy link
Contributor

@randygrok randygrok commented Mar 13, 2026

Part of #119

Implements Part 1 (Core) of EV Deployer — a CLI tool for generating genesis alloc entries for ev-reth contracts via declarative TOML configuration.

The tool reads a TOML config file, encodes contract bytecode and storage state, and generates Ethereum-compatible genesis alloc JSON. Supports merging into existing genesis files with collision detection. Currently handles AdminProxy and FeeVault contracts.

Summary by CodeRabbit

  • New Features

    • EV Deployer CLI tool for generating and merging genesis allocs; supports AdminProxy and FeeVault; can export address manifests
  • Documentation

    • Configuration guide and example devnet TOML included; CLI usage documented
  • Tests

    • Unit tests for config, storage encoding, and genesis generation; end-to-end devnet test script added
  • Chores

    • Build/test recipes added for the deployer (justfile) and CI workflow to run unit and e2e checks

@randygrok randygrok requested a review from a team as a code owner March 13, 2026 17:48
@coderabbitai
Copy link

coderabbitai bot commented Mar 13, 2026

📝 Walkthrough

Walkthrough

Adds a new ev-deployer CLI crate that generates/merges Ethereum genesis alloc JSON from TOML configs (AdminProxy and FeeVault), embeds runtime bytecodes, encodes deterministic genesis storage, includes validation, unit and e2e tests, and CI workflow and build recipes.

Changes

Cohort / File(s) Summary
Workflow & Workspace
\.github/workflows/ev_deployer.yml, Cargo.toml, justfile, contracts/foundry.toml
New GitHub Actions workflow with three jobs (verify-bytecodes, unit-tests, e2e-genesis); register bin/ev-deployer as workspace member; add just recipes build-deployer/test-deployer; set Foundry solc 0.8.33 and bytecode options.
Package & Docs
bin/ev-deployer/Cargo.toml, bin/ev-deployer/README.md, bin/ev-deployer/examples/devnet.toml
New crate manifest and README documenting CLI, config schema, example devnet TOML, dependencies and build/test instructions.
Configuration
bin/ev-deployer/src/config.rs
TOML-deserializable structs and DeployConfig::load with validation (non-zero owners, distinct addresses, bridge_share_bps ≤ 10000); unit tests for validation paths.
Contracts Primitives
bin/ev-deployer/src/contracts/mod.rs, bin/ev-deployer/src/contracts/admin_proxy.rs, bin/ev-deployer/src/contracts/fee_vault.rs
Define GenesisContract type; add hardcoded runtime bytecodes and build functions producing deterministic storage maps for AdminProxy and FeeVault; unit tests and ignored forge-based bytecode comparison tests.
Genesis & Output
bin/ev-deployer/src/genesis.rs, bin/ev-deployer/src/output.rs
build_alloc to produce alloc JSON entries (balance, code, storage); merge_into to merge into existing genesis with collision/force semantics; build_manifest to emit address mapping.
CLI Entrypoint
bin/ev-deployer/src/main.rs
ev-deployer CLI with genesis (build/merge/write alloc, optional addresses manifest) and compute-address subcommands using clap.
E2E Test Script
bin/ev-deployer/tests/e2e_genesis.sh
Bash script to build deployer and ev-reth, generate merged devnet genesis, run local node, and validate deployed bytecode and specific storage slots via RPC polling.

Sequence Diagram

sequenceDiagram
    actor User
    participant CLI as ev-deployer CLI
    participant Config as Config Loader
    participant Contracts as Contract Builders
    participant Genesis as Genesis Builder
    participant JSON as JSON Output
    participant Node as Local Node

    User->>CLI: genesis --config devnet.toml --merge-into genesis.json
    CLI->>Config: DeployConfig::load(path)
    Config->>Config: validate()
    Config-->>CLI: DeployConfig

    CLI->>Contracts: admin_proxy::build(&config)
    Contracts->>Contracts: encode owner → storage slot 0
    Contracts-->>CLI: GenesisContract

    CLI->>Contracts: fee_vault::build(&config)
    Contracts->>Contracts: encode slots 0–6, pack owner+domain, default bridge_share_bps
    Contracts-->>CLI: GenesisContract

    CLI->>Genesis: build_alloc(config)
    Genesis->>Genesis: assemble alloc entries (balance, code, storage)
    Genesis-->>CLI: alloc JSON Value

    CLI->>Genesis: merge_into(path, force)
    Genesis->>Genesis: read existing genesis.json, merge or overwrite entries
    Genesis-->>CLI: merged alloc JSON Value

    CLI->>JSON: serialize pretty JSON
    JSON-->>CLI: file/stdout written

    CLI-->>User: status
    User->>Node: RPC: eth_getCode / eth_getStorageAt
    Node-->>User: bytecode / storage values
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

Suggested reviewers

  • damiannolan
  • chatton

Poem

🐰 I hopped in with TOML and bit of cheer,
Bytecodes tucked and storage slots clear,
Genesis formed from config and art,
Tests and CI give it a smart start,
Hop, deploy, and celebrate — a new part!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: adding the ev-deployer CLI tool for genesis contract allocation, with 'part 1' indicating this is the first phase of a larger implementation.
Description check ✅ Passed The PR description provides a clear summary of the changes (Part 1 of EV Deployer, a CLI tool for generating genesis alloc entries), references the related issue (#119), and indicates the implementation handles AdminProxy and FeeVault contracts with TOML config support and genesis file merging. However, the description does not fill out the structured template sections (Type of Change checkbox, Testing section, Checklist items).
Docstring Coverage ✅ Passed Docstring coverage is 87.50% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ev-deployer-part1-core
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@claude
Copy link

claude bot commented Mar 13, 2026

Claude finished @randygrok's task —— View job


Code Review: EV Deployer CLI Tool

I've conducted a thorough review of the ev-deployer implementation. Overall, this is a solid CLI tool with good architecture and comprehensive testing. Here are my findings:

Strengths

Code Quality & Architecture

  • Clean modular structure with logical separation of concerns (config, contracts, genesis, output)
  • Good use of Rust idioms and error handling with eyre
  • Comprehensive unit tests with good test coverage
  • Well-documented configuration schema and CLI interface
  • Strong validation logic preventing common configuration mistakes

Security

  • Input validation prevents zero addresses for owners
  • Address collision detection prevents accidental overwrites
  • Bridge share bounds checking (0-10000 bps)
  • Safe bytecode embedding with hardcoded constants verified against source

Testing

  • Excellent e2e test that builds, deploys, and verifies on-chain state
  • Good unit test coverage for storage encoding, validation, and JSON generation
  • Bytecode verification tests ensure consistency with Solidity source

⚠️ Issues Found

Critical (Fixed by Recent Commit)

  1. Address uniqueness validation bin/ev-deployer/src/config.rs:103-108Fixed
    • Now properly validates that admin_proxy and fee_vault addresses are distinct

High Severity
2. CLI merge behavior issue bin/ev-deployer/src/main.rs:71-84

  • When using --merge-into without --output, merged result only goes to stdout
  • Users expect merge to modify the target file in-place
  • Should write back to the merge target when no explicit output specified
  1. CI workflow path filters incomplete .github/workflows/ev_deployer.yml:6-19Fixed
    • Now properly includes root-level Cargo files and workflow itself in triggers

Medium Severity
4. Panic-prone forge output parsing bin/ev-deployer/src/contracts/admin_proxy.rs:68-72 and fee_vault.rs:171-175

  • Uses .unwrap() on strip_prefix("0x") - will panic if forge output lacks "0x" prefix
  • Should use trim_start_matches("0x") for tolerant parsing
  1. E2E test timeout risks bin/ev-deployer/tests/e2e_genesis.sh:35-47Fixed

    • RPC calls now include proper timeouts to prevent CI hangs
  2. Documentation inaccuracy bin/ev-deployer/README.md:86Fixed

    • README now correctly describes merge behavior

🔍 Performance & Best Practices

Good

  • Efficient use of BTreeMap for storage slots
  • Minimal allocations in critical paths
  • Good error propagation without panics

Minor Improvements

  • Consider using thiserror for more structured error types
  • Could add progress indicators for long-running operations
  • Command output formatting could be more consistent

🧪 Test Coverage Assessment

Excellent Coverage

  • ✅ Configuration validation (zero addresses, BPS bounds, address uniqueness)
  • ✅ Storage slot encoding for both contracts
  • ✅ Genesis JSON structure and merging logic
  • ✅ End-to-end workflow with actual node verification
  • ✅ Bytecode consistency with Solidity source

Missing Coverage

  • Error handling edge cases (malformed TOML, filesystem errors)
  • CLI argument validation
  • Large-scale performance testing

🔐 Security Review

No Security Concerns Found

  • Proper input validation prevents dangerous configurations
  • No hardcoded secrets or sensitive data exposure
  • Safe filesystem operations with appropriate error handling
  • Read-only operations on contract bytecode
  • Network calls are isolated to test environment

🎯 Remaining Action Items

Based on the review comments, there are still a few issues to address:

  1. CLI merge behavior - Fix the --merge-into without --output case to write back to the merge target
  2. Error handling robustness - Replace panic-prone forge output parsing with tolerant alternatives

Final Assessment

This is a high-quality implementation that demonstrates good Rust practices and thorough testing. The core functionality is solid, and the remaining issues are relatively minor refinements that would improve robustness and user experience.

Recommendation: ✅ APPROVE with minor fixes

The tool successfully achieves its design goals and includes comprehensive validation and testing. The architecture is sound and extensible for future contract types.


@randygrok randygrok marked this pull request as draft March 13, 2026 17:48
@randygrok randygrok changed the title feat: add ev-deployer CLI for genesis contract allocation feat(ev-deployer): add ev-deployer CLI for genesis contract allocation Mar 18, 2026
@randygrok randygrok changed the title feat(ev-deployer): add ev-deployer CLI for genesis contract allocation feat(ev-deployer): part 1 - add ev-deployer CLI for genesis contract allocation Mar 18, 2026
@randygrok randygrok marked this pull request as ready for review March 19, 2026 09:48
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/ev_deployer.yml:
- Around line 6-13: The pull_request path filters in ev_deployer.yml only
include 'contracts/src/**', 'contracts/foundry.toml', and 'bin/ev-deployer/**',
so edits to root Cargo.toml, Cargo.lock, or the workflow itself won't trigger EV
Deployer CI and can break cargo test -p ev-deployer; update the
pull_request.paths block (the pull_request.paths entry in
.github/workflows/ev_deployer.yml) to also include the root-level files like
'Cargo.toml', 'Cargo.lock', and the workflow file (e.g.
'.github/workflows/ev_deployer.yml') so changes to those files will trigger the
workflow.

In `@bin/ev-deployer/README.md`:
- Around line 86-90: The README's description of the merge behavior is
misleading: update the text around the ev-deployer genesis command (referencing
the --merge-into and --output flags) to remove the phrase "modifies the `alloc`
field in-place" and explicitly state that the CLI does not mutate the original
file but writes the merged result to the path provided by --output (or to stdout
if --output is omitted); ensure the example command and accompanying sentence
clearly say the original genesis.json is unchanged and the merged output is
written to genesis-out.json (or stdout).

In `@bin/ev-deployer/src/config.rs`:
- Around line 83-101: The validate() method currently doesn't ensure contract
addresses are unique, allowing admin_proxy.address == fee_vault.address which
later causes silent alloc overwrites; add a check in validate() that if both
self.contracts.admin_proxy and self.contracts.fee_vault are Some, their .address
fields must not be equal and fail fast (use eyre::ensure or eyre::bail) with a
clear error like "admin_proxy.address must not equal fee_vault.address"; update
the validate() function to perform this uniqueness assertion alongside the
existing owner and bridge_share_bps checks.

In `@bin/ev-deployer/src/contracts/admin_proxy.rs`:
- Around line 68-73: The current normalization of forge output (building
forge_hex from output.stdout) uses unwraps and will panic on invalid UTF-8 or if
the "0x" prefix is missing; change it to handle errors safely by first
converting output.stdout with String::from_utf8 and propagating or logging the
error instead of unwrap, then perform trimming and lowercase on the resulting
string and remove a leading "0x" non-panically (e.g., use
strip_prefix("0x").unwrap_or(&s) or check starts_with and slice) to produce
forge_hex; update the code that assigns forge_hex (the variable constructed from
output.stdout) to return a Result or fallback value rather than panicking.

In `@bin/ev-deployer/src/contracts/fee_vault.rs`:
- Around line 171-176: The current normalization of forge output into forge_hex
uses multiple unwraps and can panic if the output is not valid UTF-8 or if the
"0x" prefix is missing; change it to a tolerant normalization that avoids
unwraps by using String::from_utf8_lossy on output.stdout and
trim_start_matches("0x") instead of strip_prefix/unwrap, e.g. build forge_hex
from
String::from_utf8_lossy(&output.stdout).trim().trim_start_matches("0x").to_lowercase()
so it safely handles missing "0x" and invalid UTF-8.

In `@bin/ev-deployer/src/main.rs`:
- Around line 71-75: When --merge-into is provided but no explicit --output is
given, the merged genesis currently only goes to stdout; change the control flow
so that when merge_into is Some(genesis_path) and output is None you persist the
merged result back to genesis_path. Concretely, after calling
genesis::merge_into(&cfg, genesis_path, force) (or using the merged value from
genesis::build_alloc when merging), write the resulting genesis bytes/string to
the same genesis_path (or call an existing genesis write helper) instead of only
printing to stdout; update the branch that handles merge_into (and the similar
branch around lines 79–84) to perform that write when output is unspecified.

In `@bin/ev-deployer/tests/e2e_genesis.sh`:
- Around line 35-38: The curl RPC calls that post JSON-RPC using RPC_URL with
variables method and params are currently blocking; update both curl invocations
(the ones that build the JSON payload with "$RPC_URL" and -d
"{\"jsonrpc\":\"2.0\",\"method\":\"$method\",\"params\":$params,\"id\":1}" and
the similar second call) to include connection and overall timeouts (for example
--connect-timeout 5 --max-time 10) so a stalled node/socket won’t hang CI; keep
the existing headers and piping to python3 unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 442c5b5a-2b3c-4deb-af81-3a72dbdffa67

📥 Commits

Reviewing files that changed from the base of the PR and between 2a96f46 and 7e19222.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • contracts/foundry.lock is excluded by !**/*.lock
📒 Files selected for processing (15)
  • .github/workflows/ev_deployer.yml
  • Cargo.toml
  • bin/ev-deployer/Cargo.toml
  • bin/ev-deployer/README.md
  • bin/ev-deployer/examples/devnet.toml
  • bin/ev-deployer/src/config.rs
  • bin/ev-deployer/src/contracts/admin_proxy.rs
  • bin/ev-deployer/src/contracts/fee_vault.rs
  • bin/ev-deployer/src/contracts/mod.rs
  • bin/ev-deployer/src/genesis.rs
  • bin/ev-deployer/src/main.rs
  • bin/ev-deployer/src/output.rs
  • bin/ev-deployer/tests/e2e_genesis.sh
  • contracts/foundry.toml
  • justfile

Comment on lines +68 to +73
let forge_hex = String::from_utf8(output.stdout)
.unwrap()
.trim()
.strip_prefix("0x")
.unwrap()
.to_lowercase();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Avoid panic on forge output normalization.

Line 71/72 assumes a 0x prefix and will panic on unexpected forge output shape. Prefer a non-panicking normalization path.

Suggested fix
-        let forge_hex = String::from_utf8(output.stdout)
-            .unwrap()
-            .trim()
-            .strip_prefix("0x")
-            .unwrap()
-            .to_lowercase();
+        let forge_hex = String::from_utf8(output.stdout)
+            .unwrap()
+            .trim()
+            .trim_start_matches("0x")
+            .to_lowercase();
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
let forge_hex = String::from_utf8(output.stdout)
.unwrap()
.trim()
.strip_prefix("0x")
.unwrap()
.to_lowercase();
let forge_hex = String::from_utf8(output.stdout)
.unwrap()
.trim()
.trim_start_matches("0x")
.to_lowercase();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bin/ev-deployer/src/contracts/admin_proxy.rs` around lines 68 - 73, The
current normalization of forge output (building forge_hex from output.stdout)
uses unwraps and will panic on invalid UTF-8 or if the "0x" prefix is missing;
change it to handle errors safely by first converting output.stdout with
String::from_utf8 and propagating or logging the error instead of unwrap, then
perform trimming and lowercase on the resulting string and remove a leading "0x"
non-panically (e.g., use strip_prefix("0x").unwrap_or(&s) or check starts_with
and slice) to produce forge_hex; update the code that assigns forge_hex (the
variable constructed from output.stdout) to return a Result or fallback value
rather than panicking.

Comment on lines +171 to +176
let forge_hex = String::from_utf8(output.stdout)
.unwrap()
.trim()
.strip_prefix("0x")
.unwrap()
.to_lowercase();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use non-panicking forge hex normalization in test.

Line 174/175 can panic if forge output unexpectedly omits 0x. Prefer tolerant normalization.

Suggested fix
-        let forge_hex = String::from_utf8(output.stdout)
-            .unwrap()
-            .trim()
-            .strip_prefix("0x")
-            .unwrap()
-            .to_lowercase();
+        let forge_hex = String::from_utf8(output.stdout)
+            .unwrap()
+            .trim()
+            .trim_start_matches("0x")
+            .to_lowercase();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bin/ev-deployer/src/contracts/fee_vault.rs` around lines 171 - 176, The
current normalization of forge output into forge_hex uses multiple unwraps and
can panic if the output is not valid UTF-8 or if the "0x" prefix is missing;
change it to a tolerant normalization that avoids unwraps by using
String::from_utf8_lossy on output.stdout and trim_start_matches("0x") instead of
strip_prefix/unwrap, e.g. build forge_hex from
String::from_utf8_lossy(&output.stdout).trim().trim_start_matches("0x").to_lowercase()
so it safely handles missing "0x" and invalid UTF-8.

Comment on lines +71 to +75
let result = if let Some(ref genesis_path) = merge_into {
genesis::merge_into(&cfg, genesis_path, force)?
} else {
genesis::build_alloc(&cfg)
};
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

--merge-into without --output drops merged result to stdout only.

When users pass --merge-into alone, the merged genesis is not written back to the source file. That makes merge behavior easy to misuse and lose.

Suggested fix (persist merge target by default)
-            if let Some(ref out_path) = output {
-                std::fs::write(out_path, &json)?;
-                eprintln!("Wrote alloc to {}", out_path.display());
-            } else {
-                println!("{json}");
-            }
+            if let Some(target_path) = output.as_ref().or(merge_into.as_ref()) {
+                std::fs::write(target_path, &json)?;
+                eprintln!("Wrote alloc to {}", target_path.display());
+            } else {
+                println!("{json}");
+            }

Also applies to: 79-84

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bin/ev-deployer/src/main.rs` around lines 71 - 75, When --merge-into is
provided but no explicit --output is given, the merged genesis currently only
goes to stdout; change the control flow so that when merge_into is
Some(genesis_path) and output is None you persist the merged result back to
genesis_path. Concretely, after calling genesis::merge_into(&cfg, genesis_path,
force) (or using the merged value from genesis::build_alloc when merging), write
the resulting genesis bytes/string to the same genesis_path (or call an existing
genesis write helper) instead of only printing to stdout; update the branch that
handles merge_into (and the similar branch around lines 79–84) to perform that
write when output is unspecified.

- Expand CI workflow path triggers to include Cargo.toml, Cargo.lock,
  and the workflow file itself
- Fix README merge behavior description (not in-place)
- Validate contract addresses are unique in config
- Use trim_start_matches("0x") instead of strip_prefix().unwrap() in
  bytecode verification tests
- Add curl timeouts to e2e test RPC calls to prevent CI hangs
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
bin/ev-deployer/src/contracts/fee_vault.rs (1)

171-175: ⚠️ Potential issue | 🟡 Minor

Avoid panic in forge output decoding path.

Line 171 still uses String::from_utf8(output.stdout).unwrap(), which can panic on unexpected bytes. Use lossy decoding to keep this parity test tolerant.

Proposed fix
-        let forge_hex = String::from_utf8(output.stdout)
-            .unwrap()
+        let forge_hex = String::from_utf8_lossy(&output.stdout)
             .trim()
             .trim_start_matches("0x")
             .to_lowercase();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bin/ev-deployer/src/contracts/fee_vault.rs` around lines 171 - 175, The
current forge_hex construction uses String::from_utf8(output.stdout).unwrap()
which can panic on invalid UTF-8; change the decoding to a lossy form (e.g. use
String::from_utf8_lossy on output.stdout) before
trim/trim_start_matches/to_lowercase so the parity test tolerates unexpected
bytes and avoids panics when building forge_hex.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@bin/ev-deployer/src/contracts/fee_vault.rs`:
- Around line 171-175: The current forge_hex construction uses
String::from_utf8(output.stdout).unwrap() which can panic on invalid UTF-8;
change the decoding to a lossy form (e.g. use String::from_utf8_lossy on
output.stdout) before trim/trim_start_matches/to_lowercase so the parity test
tolerates unexpected bytes and avoids panics when building forge_hex.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c7550381-d587-49ad-b622-1fca28fe6555

📥 Commits

Reviewing files that changed from the base of the PR and between 7e19222 and aeffc0d.

📒 Files selected for processing (6)
  • .github/workflows/ev_deployer.yml
  • bin/ev-deployer/README.md
  • bin/ev-deployer/src/config.rs
  • bin/ev-deployer/src/contracts/admin_proxy.rs
  • bin/ev-deployer/src/contracts/fee_vault.rs
  • bin/ev-deployer/tests/e2e_genesis.sh
✅ Files skipped from review due to trivial changes (2)
  • .github/workflows/ev_deployer.yml
  • bin/ev-deployer/README.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • bin/ev-deployer/src/config.rs
  • bin/ev-deployer/src/contracts/admin_proxy.rs
  • bin/ev-deployer/tests/e2e_genesis.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants